pub mod buffer;
pub mod context;
pub mod material;
pub mod mesh;
pub mod shader;
pub mod texture;
pub mod uniform;

use std::any::Any;

pub use context::Context;
use impl_downcast::impl_downcast;

pub trait Attribute: Any {
    fn layout(&self) -> &wgpu::BindGroupLayout;
    fn bind_group(&self) -> &wgpu::BindGroup;
    fn prepare(&mut self, ctx: &Context);
}

impl_downcast!(Attribute);
